package com.jinlia.show.modules.system.model.vo.excel;

import com.jinlia.show.modules.base.system.entity.GoodsAttrValue;
import com.jinlia.show.modules.base.model.po.GoodsPO;
import com.jinlia.show.modules.base.model.po.GoodsAttrPO;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Objects;

@Data
public class ExcelGoodsVO {
    private String id;
    private String companyId;
    private String goodsName;
    private Long goodsType;
    private String goodsPics;
    private BigDecimal price;
    /**
     * 佐料(规格:大腕(3元),中腕(2),小碗(0)|辣味:重辣,微辣,拉辣)
     */
    private String sku;

    public GoodsPO transToGoodsVO() {
        GoodsPO goodsVO = transToGoodsVO(this);
        //处理类型不值一问题
        goodsVO.setId(Objects.isNull(this.getId()) ? null : Long.parseLong(this.getId()));
        return goodsVO;
    }

    public GoodsPO transToGoodsVO(ExcelGoodsVO excelGoodsVO) {
        GoodsPO goodsVO = new GoodsPO();
        BeanUtils.copyProperties(excelGoodsVO, goodsVO);
        String SkuStr = excelGoodsVO.getSku();
        if (StringUtils.hasLength(SkuStr)) {
            String[] split = SkuStr.split("\\|");
            ArrayList<GoodsAttrPO> goodsSkuVOS = new ArrayList<>();
            goodsVO.setGoodsAttrPOS(goodsSkuVOS);
            for (String splitItem : split) {
                String goodsSkuName = splitItem.substring(0, splitItem.indexOf(":"));
                GoodsAttrPO goodsSkuVO = new GoodsAttrPO();
                goodsSkuVOS.add(goodsSkuVO);
                goodsSkuVO.setGoodsId(goodsVO.getId());
                goodsSkuVO.setAttrName(goodsSkuName);
                String goodsSkuItemsStr = splitItem.substring(splitItem.indexOf(":") + 1);
                if (StringUtils.hasLength(goodsSkuItemsStr)) {
                    continue;
                }
                ArrayList<GoodsAttrValue> goodsSkuItemsList = new ArrayList<>();
                goodsSkuVO.setGoodsSkuItems(goodsSkuItemsList);
                String[] goodsSkuItemsSplit = goodsSkuItemsStr.split(",");
                for (String goodsSkuItemsSplitI : goodsSkuItemsSplit) {
                    GoodsAttrValue goodsSkuItem = new GoodsAttrValue();
                    goodsSkuItemsList.add(goodsSkuItem);
                    if (goodsSkuItemsSplitI.contains("+")) {
                        goodsSkuItem.setAttrValueName(goodsSkuItemsSplitI.substring(0, goodsSkuItemsSplitI.indexOf("+")));
//                        goodsSkuItem.setPrice(goodsSkuItemsSplitI.substring(goodsSkuItemsSplitI.indexOf("+") + 1));
                    } else {
                        goodsSkuItem.setAttrValueName(goodsSkuItemsSplitI);
                    }

                }
            }
        }
        return goodsVO;
    }
}
